{% set default_cable = '5m' %}
{% set ingress_lossless_pool_size =  '7719936' %}
{% set ingress_lossless_pool_xoff =  '1032192' %}
{% set egress_lossless_pool_size =  '13945824' %}
{% set egress_lossy_pool_size =  '7719936' %}

{%- macro generate_port_lists(PORT_ALL) %}
    {# Generate list of ports #}
    {%- for port_idx in range(0, 32) %}
        {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %}
    {%- endfor %}
{%- endmacro %}

{%- macro generate_buffer_pool_and_profiles() %}
    "BUFFER_POOL": {
        "ingress_lossless_pool": {
            {%- if dynamic_mode is not defined %}
            "size": "{{ ingress_lossless_pool_size }}",
            "xoff": "{{ ingress_lossless_pool_xoff }}",
            {%- endif %}
            "type": "ingress",
            "mode": "dynamic"
        },
        "egress_lossless_pool": {
            "size": "{{ egress_lossless_pool_size }}",
            "type": "egress",
            "mode": "dynamic"
        },
        "egress_lossy_pool": {
            {%- if dynamic_mode is not defined %}
            "size": "{{ egress_lossy_pool_size }}",
            {%- endif %}
            "type": "egress",
            "mode": "dynamic"
        }
    },
    "BUFFER_PROFILE": {
        "ingress_lossless_profile": {
            "pool":"[BUFFER_POOL|ingress_lossless_pool]",
            "size":"0",
            "dynamic_th":"7"
        },
        "ingress_lossy_profile": {
            "pool":"[BUFFER_POOL|ingress_lossless_pool]",
            "size":"0",
            "dynamic_th":"3"
        },
        "egress_lossless_profile": {
            "pool":"[BUFFER_POOL|egress_lossless_pool]",
            "size":"0",
            "dynamic_th":"7"
        },
        "egress_lossy_profile": {
            "pool":"[BUFFER_POOL|egress_lossy_pool]",
            "size":"9216",
            "dynamic_th":"7"
        },
        "q_lossy_profile": {
            "pool":"[BUFFER_POOL|egress_lossy_pool]",
            "size":"0",
            "dynamic_th":"3"
        }
    },
{%- endmacro %}

{%- macro generate_profile_lists(port_names) %}
    "BUFFER_PORT_INGRESS_PROFILE_LIST": {
{% for port in port_names.split(',') %}
        "{{ port }}": {
            "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile]"
        }{% if not loop.last %},{% endif %}

{% endfor %}
    },
    "BUFFER_PORT_EGRESS_PROFILE_LIST": {
{% for port in port_names.split(',') %}
        "{{ port }}": {
            "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]"
        }{% if not loop.last %},{% endif %}

{% endfor %}
    }
{%- endmacro %}

{%- macro generate_queue_buffers(port_names) %}
    "BUFFER_QUEUE": {
{% for port in port_names.split(',') %}
        "{{ port }}|3-4": {
            "profile" : "[BUFFER_PROFILE|egress_lossless_profile]"
        },
{% endfor %}
{% for port in port_names.split(',') %}
        "{{ port }}|0-2": {
            "profile" : "[BUFFER_PROFILE|q_lossy_profile]"
        },
{% endfor %}
{% for port in port_names.split(',') %}
        "{{ port }}|5-6": {
            "profile" : "[BUFFER_PROFILE|q_lossy_profile]"
        }{% if not loop.last %},{% endif %}

{% endfor %}
    }
{%- endmacro %}


